package pruebasUnitarias.pruebasChoques;

import objetos.aeronaves.*;
import objetos.aeronaves.civiles.*;
import objetos.aeronaves.enemigos.*;
import objetos.proyectiles.*;
import org.junit.*;

public class ChoqueAeronaveNoControladaTest {
	private Algo42 algo42;
	private Enemigo avioneta;
	private Civil avionCivil;
	private Enemigo scout, caza;
	private Civil helicoptero;
	private Proyectil laser1, laser2, torpedo;

	@Before
	public void setUp() {
		avioneta = new Avioneta(15, 5);
		avionCivil = new AvionCivil(5, 5);
		algo42 = new Algo42(3, 2);
		scout = new Scout(2, 3);
		caza = new Caza(5, 5);
		helicoptero = new Helicoptero(3, 4);
		laser1 = new LaserShoot(algo42);
		laser2 = new LaserShoot(algo42);
		torpedo = new Torpedo(algo42);
	}

	@Test
	public void testChocarAlgo42() {
		int energiaAvioneta = avioneta.getCantidadEnergia();
		int energiaAvionCivil = avionCivil.getCantidadEnergia();
		int energiaCompletaAlgo42 = algo42.getCantidadEnergia();

		Assert.assertFalse(avioneta.estaDestruido());
		avioneta.colisionConAlgo42(algo42);
		Assert.assertTrue(avioneta.estaDestruido());
		int energiaActualAlgo42 = energiaCompletaAlgo42 - energiaAvioneta;
		Assert.assertTrue(algo42.getCantidadEnergia() == energiaActualAlgo42);

		System.out.println("Las aeronaves enemigas chocan bien con el Algo42");

		Assert.assertFalse(avionCivil.estaDestruido());
		avionCivil.colisionConAlgo42(algo42);
		Assert.assertTrue(avionCivil.estaDestruido());
		energiaActualAlgo42 -= energiaAvionCivil;
		Assert.assertTrue(algo42.getCantidadEnergia() == energiaActualAlgo42);

		System.out.println("Las aeronaves civiles chocan bien con el Algo42");
	}

	@Test
	public void testChocarProjectil() {
		/* Es igual para laser2 */
		int poderLaser = laser1.getPoder().getCantidad();
		int energiaCompletaCaza = caza.getCantidadEnergia();

		Assert.assertFalse(scout.estaDestruido());
		scout.colisionConProyectil(laser1);
		Assert.assertTrue(scout.estaDestruido());

		Assert.assertFalse(caza.estaDestruido());
		caza.colisionConProyectil(laser2);
		int energiaActualCaza = energiaCompletaCaza - poderLaser;
		Assert.assertTrue(caza.getCantidadEnergia() == energiaActualCaza);
		Assert.assertFalse(caza.estaDestruido());

		System.out
				.println("Las aeronaves enemigas chocan bien con proyectiles");

		Assert.assertFalse(helicoptero.estaDestruido());
		helicoptero.colisionConProyectil(torpedo);
		Assert.assertTrue(helicoptero.estaDestruido());

		System.out.println("Las aeronaves civiles chocan bien con proyectiles");
	}

}
